package cn.demoncat.util.lang.entity;

import org.apache.commons.lang3.StringUtils;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.List;

/**
 * String类型的List
 * 
 * @author 延晓磊
 *
 * @since 2019年5月17日
 */
public class ListStr extends ArrayList<String>{
 
	private static final long serialVersionUID = 1L;

	/**
	 * 空，不可变
	 */
	public static final List<String> EMPTY = new ListStr();
			
	/**
	 * 实例化
	 * 
	 * @return
	 * 
	 * @author 延晓磊
	 *
	 * @since 2018年11月21日
	 */
	public static ListStr getInstance(String... value) {
		ListStr list = new ListStr();
		if (value != null && value.length > 0) {
			Collections.addAll(list, value);
		}
		return list;
	}

	/**
	 * to array
	 *
	 * @param list
	 * @return
	 *
	 * @author 延晓磊
	 *
	 * @since 2018年11月21日
	 */
	public static String[] toArr(List<String> list){
		return list.toArray(new String[0]);
	}

	/**
	 * to array
	 *
	 * @return
	 *
	 * @author 延晓磊
	 *
	 * @since 2018年11月21日
	 */
	public String[] toArr(){
		return toArr(this);
	}

	/**
	 * 添加
	 *
	 * @param list
	 * @return
	 *
	 * @author 延晓磊
	 * @since 2021年03月03日
	 */
	public ListStr push(Collection<String> list){
		this.addAll(list);
		return this;
	}

	/**
	 * 添加
	 *
	 * @param value
	 * @return
	 *
	 * @author 延晓磊
	 * @since 2021年03月03日
	 */
	public ListStr push(String ... value){
		if (value != null && value.length > 0) {
			Collections.addAll(this, value);
		}
		return this;
	}

	/**
	 * 添加，校验非空
	 *
	 * @param check	是否校验非空
	 * @param value
	 * @return
	 */
	public ListStr push(boolean check, String value){
		if (!check || StringUtils.isNotBlank(value)) {
			this.add(value);
		}
		return this;
	}
}
